23

» WarCraft 3 / Почему фатал?

Похожие вопросы:

ответ
Слышал, что
Дед-Мороз
реально существует. Почему?
Как тебе намек?
ответ
Проблема была в самих магазинах, сделал как в старой версии, заработало.
ответ
проверь настройки A01P, возможно, там кривые данные выше 3-го уровня

23

» WarCraft 3 / Опять проверка юнита в области

Похожие вопросы:

ответ
Тип молнии менять пробовал?
Возможно, это глюк ресурсов в архиве игры (иногда такое бывает, виной тому, чаще всего, кривой пиратский патч мпку, где "оригинальные" ресурсы патчат битыми, или, допустим, разрешение локальных файлов и наличие кривой замены уже в папке вара)
Также, попробуй добавить действие типа "текстовое сообщение всем игрокам" в начало триггера, возможно, не срабатывает ивент.
Вообще, такие ошибки на коленке расследовать не очень удобно, хотелось бы увидеть скрин.

23

» WarCraft 3 / Событие - Юнит входит в область

Похожие вопросы:

ответ
область- x1 x2 y1 y2
Если координата юнита x1<=X=<x2 и y1<=Y<=y2, то юнит в области с этими координатами. Иначе его там нет. Да и в гуи, вроде было, область содержит точку
ответ
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
ответ
Аура не сразу вешается на юнита, нужна задержка.

23

» WarCraft 3 / Способность Строить

Похожие вопросы:

ответ
на этот вопрос уже дали ответ
если хочешь чтобы сделали за тебя то ты ошибся темой
кроме постройки юнитов можно ещё юзать покупку предметов/юнитов
но с постройкой проще и лучше
как это всё реализовать можно прочитать там
короче вопрос закрыт
Кет, плиз введите правила запрещающие повторное создание вопросов
ответ
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя
ответ
Проблема внезапно решилась сама собой. В дальнейших рассуждениях смысла не вижу, всем спасибо.
ответ
  1. Делаем триггер с событием "юнит входит в область (вся карта)", выключенный при старте
  2. Ловим применение абилы, включаем триггер
  3. Первым действием в триггере выключаем его, GetTriggerUnit() будет ссылаться на ратушу по-идее
ответ
Ну тебе нужно чтобы был прямо таки бафф который можно рассеивать?
Для начала сделай способность, и баф на основе какой нибудь пустышки, подойдет ярость у некромантов, так же переодический триггер который раз в пол секунды проверяет всех юнитов в группе, есть ли у них бафф если юнит мертв или у него нет баффа, то у юнита удаляется способность на доп урон зданиям и сам унит удаляется из группы.
При касте твоим шаманов заклинания на цель, ты добавляешь цель заклинания в группу, которую и перебирает описанный выше триггер.
Надеюсь понятно?

23

» WarCraft 3 / количество боевых едениц

Похожие вопросы:

ответ
Ты добавлял кости? Или через "повышение урона (улучшение)"? Значение последнего у юнита помечено — это добавится "базовый урон".
ответ
есть вопрос про изменение хп героя
в редакторе есть действие arifmetic
остается сложить одно с другим

23

» WarCraft 3 / Очередь приказов

Похожие вопросы:

ответ
Едва ли. Хотя...
Есть хорошее условие wait for condition, благодаря которому всё можно будет впечатать в 1 триггер без особых сложностей.
Например приказать топать в область 1
подождать пока область 1 содержт юнит
приказать что-то ещё.
ответ
Помог таймер в 0.01 секунду.
ответ
UniverseRuler, в доте 6-6 использованы игроки 13 и 14
тебе нужно просто сохранять приказ отданный триггерно(ты ведь ими будешь юнитами управлять)
и восстанавливать его при получение приказа для игрока
для этого нужна буленовская переменная для определения триггерный это приказ или нет
и структура/хэш/юзердата для сохранения приказа
UniverseRuler:
еще остались асы картостроения, но а сейчас начинаю думать, что их все таки нету
если ас картостроения это человек который воплощает все ваши фантазии в жизнь то тут таких нету и не было
ещё можно создавать всех юнитов за 1 резервного игрока
а автоатаку делать триггерно
этот вариант самый лучший но то просто не сможешь его сделать
ибо нужны джасс+алгоритмы+структуры/хэш
а ты судя по всему ничего из этого не знаешь
ответ
либо сделай триггерный блинк(в некоторых случаях проще чем вариант с руной)

23

» WarCraft 3 / дальность атаки

Принятый ответ
Похожие вопросы:

ответ
lll_Kirito_lll:
Так что за прием со сферой?
Ставишь юниту в разделе Бой - Атаки на Нет, потом делаешь две способности на базе одной из сфер (например Предмет: электрическая атака), у одной из них Включен индекс атаки - 1, у другой - 2. Добавляешь первую способность юниту в РО. Когда тебе нужно изменить дальность атаки - удаляешь ту способность сферы, которая есть у юнита и добавляешь другую. Правда при этом не будет видно иконки атаки.
ответ
  1. Способность "Склад" убирает атаку. Нужна атака - не добавляй "Склад".
  2. Без дополнительных выкрутасов - нет.
ответ
Вообще в мемхаке есть же.
Но новички в картостроительстве, большинство серверов и отчасти последний патч варкрафта в мемхак не понимают.
ответ
Морф в другого героя, можно практически без кода, про руны и морфы была статья.
Так же мемхаком можно редактировать параметры атаки.
xgm.guru/p/wc3/powerups вот линк
ответ
Если не ошибаюсь - нужно еще дистанцию получения приказа поднять

23

» WarCraft 3 / Перекладывание итемов

Похожие вопросы:

ответ
от 852001 до 852008.
А так берем триггер с событием и смотритм что за приказ, на то или иное действие.

23

» WarCraft 3 / Кампания

Похожие вопросы:

ответ
~8gabriel8:
quq_CCCP, извлёк. Теперь мне засунуть этот код в копию этой карты, которую в редакторе кампаний добавить в кампанию и сохранить? Вроде как получается то же самое, как при сохранении карты в JNGP отдельно, а потом её добавлении в кампанию.
P. S. Цвета персонажей слетели при этом способе, а они очень важны. Хотя так код и правда работает.
P. P. S. Сначала карта запускалась, но цвета юнитов менялись, код срабатывал. Потом решил повторить это(замену файла war3map.j), внеся изменения в простые триггеры, но карта уже не запускалась.
P. P. P. S. Короче, разобрался в причине того, что карта не запускалась, я её с рабочего стола загружал и сохранял. Видимо из-за русских символов в пути не получалось. Если карта лежит в папке maps, то нормально. Но проблема с другими цветами персонажей, а точнее красным цветом, так и осталась. В итоге решил не мучиться, а сделать всё обычными триггерами.
Кстати, из триггера убрали элементы vjass, код стал таким, но всё равно не сохранялся в кампании:
globals
timer alp_t = CreateTimer()
integer alp_m = 0
unit array alp_a
boolean array alp_f
integer array alp_alpha
real array alp_speed
real array alp_time
endglobals
function TimeUnitAlpha takes nothing returns nothing
local integer i = 0
loop
set i = i + 1
exitwhen i>alp_m
if GetWidgetLife(alp_a[i])>0.405 and alp_time[i]>0 then
if alp_f[i] then
set alp_alpha[i] = alp_alpha[i] + R2I(alp_speed[i])
else
set alp_alpha[i] = alp_alpha[i] - R2I(alp_speed[i])
endif
call SetUnitVertexColor(alp_a[i],255,255,255,alp_alpha[i])
set alp_time[i] = alp_time[i] - 0.05
else
if alp_f[i] then
call SetUnitVertexColor(alp_a[i],255,255,255,255)
endif
set alp_a[i] = alp_a[alp_m]
set alp_f[i] = alp_f[alp_m]
set alp_time[i] = alp_time[alp_m]
set alp_alpha[i] = alp_alpha[alp_m]
set alp_speed[i] = alp_speed[alp_m]
set alp_m = alp_m - 1
if alp_m==0 then
call PauseTimer(alp_t)
endif
endif
endloop
endfunction
Принимает : (Юнита, Длительность , начальная прозрачность , макс. прозрачности за время , Появится/Исчезнуть )
call AddUnitAlpha(Caster,3,0,255,true) = Появится за 3 секунды
call AddUnitAlpha(Caster,3,255,255,false) = Исчезнет за 3 секунды
function AddUnitAlpha takes unit A,real TIMES,integer ALPHA,integer MAX_ALPHA,boolean F returns nothing
set alp_m = alp_m + 1
set alp_a[alp_m] = A
set alp_f[alp_m] = F
set alp_time[alp_m] = TIMES+0.10
set alp_alpha[alp_m] = ALPHA
set alp_speed[alp_m] = MAX_ALPHA/TIMES*0.05
if alp_m==1 then
call TimerStart(alp_t,0.05,true,function TimeUnitAlpha)
endif
endfunction
ответ
TitanQ_287, самый хороший вариант - это хранить кампании в папке "мои документы" и её подпапках. Вся эта хрень с пропаданием кампаний происходит потому что винда не любит хранить лишние файлы в Program Files.

23

» WarCraft 3 / Выбор пользователья

Похожие вопросы:

ответ
Как от души отрываю, сам писал
Собственно, сам триггер
А вот фиксатор камеры на введенном растоянии

23

» WarCraft 3 / Укрыться за щитом

Похожие вопросы:

ответ
Юнит отдал приказ без цели
приказ = defend
Игрок - enable ability - бросок для owner of triggering unit, ксли таких юнитов много у 1 игрока, то Б.е. - add ability добавить способность бросок.

Юнит отдал приказ без цели
приказ = undefend
Игрок - disable ability - бросок для owner of triggering unit, ксли таких юнитов много у 1 игрока, то Б.е. - remove ability удалить способность бросок.
ответ
можно сделать и проще... а можно и сложнее

23

» WarCraft 3 / Что не так с этой моделью?

Похожие вопросы:

ответ
Выбрать героя добавь еще.
ответ
Советую проверять бекапы один за другим, и в том, в котором впервые возникает такая проблема, и искать ошибку, она наверняка где-то в изменениях относительно хронологически предыдущей версии.
ответ
Они не прописаны в списке моделей для редактора... попробуй вручную изменять путь.
ответ
Viktor2, а ты реально импортировал все текстуры (в кол-ве 21шт ) в карту? Если хотя бы одну забыл -модель не будет отображаться.

23

» WarCraft 3 / Помогите со скилом

Похожие вопросы:

ответ
Я не понимаю как сделать, чтобы юнит применял способность для применения которой не нужно выбирать цель каста
Если сменить удар грома, на скил полиморф(он как правило требует чтобы игрок выбрал скил и кликнул по противнику) то этот тригер запашет
Проблема в том что Действие: Боевая единица: приказать юнит2 (юнит, его способность) юнит1 , способности нет в списке
Проверил с 3-мя юнитами бить типа со скилом, ток тогда и кастит
ответ
Мне надо чтобы юнит кастовал магией по цели и больше ничего, я не имел в виду дать ему маг атаку

23

» WarCraft 3 / Узнать все способности юнита

Похожие вопросы:

ответ
Obelick, эта либо не трогает мультибоарды
она по точкам(location) в основном работает
Obelick:
учить ради них джас и переписывать мне настолько лень
если ты нормально знаешь гуи и имеешь базовые знания по использованию гугл переводчика то переписать мультибоард на jass много времени не займёт
кроме того тебе не обязательно переписывать полностью
можно сконвертировать в код и поправить то что вызывает утечки
если ты говоришь об утечках в функции установки значения ячейки мультибоарда то их можно убрать следующим кодом
define MultiboardSetItemValueBJ(mb,col,row,val)=myMultiboardSetItemValue(mb,col,row,val)

void myMultiboardSetItemValue(multiboard mb, integer col, integer row, string val){
    multiboarditem mbitem = MultiboardGetItem(mb, row-1, col-1)
    MultiboardSetItemValue(mbitem, val)
    MultiboardReleaseItem(mbitem)
    mbitem=null
}
вставь его в шапку карты (туда где ты ALL.j подключал)
правда после этого автозаполнение строк/столбцов перестанет работать и придётся делать его циклом

23

» WarCraft 3 / Событие получает предмет

Похожие вопросы:

ответ
Это не пробовали?
Или вот это. Хорошая наработка, насколько я помню.
ответ
В этой карте есть система отлова урона - магический либо физический. Сделана Бородачом. Оригинальные Орб-эффекты не руинятся.
ответ
Я думаю используя руну. Делать предмет в виде руны, отлавливать её использование и проверять предметы в инвентаре. Если есть нужные, то скрещивать, если нет, то создавать новую руну на земле такого же типа.
ответ
есть вопрос про изменение хп героя
в редакторе есть действие arifmetic
остается сложить одно с другим
ответ
гуи

23

» WarCraft 3 / Анимки

Похожие вопросы:

ответ
у Сларка это даммик, который двигается вместе с ним, и потом ремувится
у Баланара - лопается, когда день наступает... присмотришь получше
ответ
включай анимацию через триггеры, ченнел всегда stand запускает, если есть время каста
ответ
Darknessay:
Hate:
через мдлвис можно делать видимость поверхностям, массово, МЕ для этого не нужен
Не замечал такой функции. Где она?

23

» WarCraft 3 / Анимация канала

Похожие вопросы:

ответ
В верху самого редактора 'Канал' графика убирал spell ? Я не у редактора, поэтому непомню точно.
Или сделай хитрей. Поставь вместо спелл - станд. Так герой будет стоять как обычно. =)
ответ
Скорее поставить задержку в 0.00 сек при применении и потом уже удалять
ответ
Fireproof, попробуй в РО у юнита поменять "Графика - Анимация - обратный ход броска" и "Графика - Анимация - точка броска" на 0. Правда, это уберёт время каста для всех умений у этого юнита.
ответ
включай анимацию через триггеры, ченнел всегда stand запускает, если есть время каста

23

» WarCraft 3 / Проблема со способностью

Похожие вопросы:

ответ
у тебя есть несколько проблем:
1)у тебя точка не удаляется и зависает в памяти что даёт утечки(лаги)
2)у тебя не устанавливается группа что даёт утечки(лаги) + нельзя отследить людей в ней
3)у тебя создаётся спецэффект, но не удаляется что даёт утечки(лаги)
Нужно создать переменную типа Отряд(то есть группа):
назвать её допустим GROUP
Нужно создать переменную типа Боевая единица:
назвать её допустим UNIT
нужно сделать так:
в триггере где событие ПРИМЕНЯЕТ СПОСОБНОСТЬ создать действие:
установить применяющий юнит = UNIT
установить FireStrike = случ точка в области Fire strike
установить группу GROUP = юниты в области 300 от Fire strike соответствующий юнит не равно UNIT
создать эффект
удалить эффект
call RemoveLocation(udg_FireStrike)
call DestroyGroup(udg_GROUP)
ответ
В предмете ID кулдауна разный ставьте.
ответ
nvc123:
Bornikkeny, сделал специально чтобы доказать тебе что ты несёшь бред
даже 2 скрина приложил
думаю закинуть библиотеки сможешь сам (в папку *твой jngp*\AdicHelper\lib)
Хорошо группы реализуешь как альтернативу unit[array]. Я тоже самое получил.
nvc123, и всё же твой хук не тот что мне нужен.
Я решил проблему, спасибо что дал идею обрабатывать движение внутри структуры, а не в стеке.
кот
library Hook initializer Init_Hook uses LibMath

globals
    mhook   ahook[100]
    integer ihook = -1
endglobals
    
struct mhook
        unit       host = null
        unit       target = null
        real       face = 0
        real       speed = 0
        real       dis = 0
        real       dismax = 0
        integer    chaini = 0
        unit       chain[50]
        real       scale = 0
        integer    move = 1
        integer    i = 0
		
		
        static method Create takes unit host, real tx, real ty, real scale returns mhook
        local mhook h = mhook.create()
        local integer i = GetPlayerId(GetOwningPlayer(host))
        local real x = GetUnitX(host)
        local real y = GetUnitY(host)
        local real f = GetAngleXY(x,y,tx,ty)
            set h.host = host
            set h.face = f
            set h.speed = 600
            set h.dismax = 1400
            set h.scale = scale
            set h.chain[0] = CreateUnit(Player(i),'h007',GetPolarX(GetUnitX(host),f,h.scale/2),GetPolarY(GetUnitY(host),f,h.scale/2),f)
            set h.i = i
            call UnitAddAbility(h.chain[0],'Amrf')
            call UnitAddAbility(h.chain[0],'Amrf')
            call SetUnitFlyHeight(h.chain[0],50,0)
            call SetUnitPathing(h.chain[0],false)
            return h
        endmethod
        
        method Start takes nothing returns boolean
            if ihook < 1000 then  
                set ihook = ihook + 1
                set ahook[ihook] = this
                return true
            else
                return false
            endif
        endmethod
        
        method Destroy takes nothing returns nothing
        local integer i = 0
            loop
            exitwhen i > ihook
                if ahook[i] == this then
                    set ahook[i] = ahook[ihook]
                    set ahook[ihook] = 0
                    set ihook = ihook - 1
                    set i = ihook // выход из цикла
                endif
            set i = i + 1
            endloop
            set this.target = null
            set this.host = null
            call this.destroy()
        endmethod
        
        method Move takes nothing returns nothing
        local integer i1 = 0
        local integer l = 0
        local real x
        local real y
        local real xh
        local real yh
        local real f
            if move == 1
                set dis = dis + speed*0.025
                loop
                 exitwhen i1 > .chaini
                    set x = GetUnitX(.chain[i1])
                    set y = GetUnitY(.chain[i1])
                    if i1 > 0 then
                        set f = GetAngleXY(x,y,GetUnitX(.chain[i1-1]),GetUnitY(.chain[i1-1]))
                        call SetUnitX(.chain[i1],GetPolarX(x,f,.speed*0.025))
                        call SetUnitY(.chain[i1],GetPolarY(y,f,.speed*0.025))
                    else    
                        set f = face
                        call SetUnitX(chain[i1],GetPolarX(x,f,.speed*0.025))
                        call SetUnitY(chain[i1],GetPolarY(y,f,.speed*0.025))
                    endif
                    call SetUnitFacing(chain[i1],f)
                 set i1 = i1 + 1
                endloop
                set x = GetUnitX(chain[chaini])
                set y = GetUnitY(chain[chaini])
                set f = GetAngleXY(GetUnitX(.host),GetUnitY(.host),x,y)
                set xh = GetPolarX(GetUnitX(.host),f,.scale/2)
                set yh = GetPolarY(GetUnitY(.host),f,.scale/2)
                //Create==================
                
                if GetDisXY(xh,yh,x,y) >= .scale/2 then
                    set chaini = chaini + 1
                    set chain[chaini] = CreateUnit(Player(.i),'h007',xh,yh,f)
                    call UnitAddAbility(.chain[.chaini],'Amrf')
                    call UnitAddAbility(.chain[.chaini],'Amrf')
                    call SetUnitFlyHeight(.chain[.chaini],50,0)
                endif
                if dis > dismax then
                    set move = 0
                endif
            else
                //REVERSE=============
                set xh = GetUnitX(host)
                set yh = GetUnitY(host)
                set chain[chaini+1] = host
                loop
                exitwhen l > chaini
                        set x = GetUnitX(chain[l])
                        set y = GetUnitY(chain[l])
                        //if chain[chaini] == null then
                        //    set f = GetAngleXY()
                        //endif
                        set f = GetAngleXY(x,y,GetUnitX(chain[l+1]),GetUnitY(chain[l+1]))
                        call SetUnitX(chain[l],GetPolarX(x,f,speed*0.025))
                        call SetUnitY(chain[l],GetPolarY(y,f,speed*0.025))
                        call SetUnitFacing(chain[l],f-180)
                set l = l + 1
                endloop
                //Destroy==================
                set x = GetUnitX(chain[chaini])
                set y = GetUnitY(chain[chaini])
                set xh = GetUnitX(host)
                set yh = GetUnitY(host)
                if GetDisXY(GetUnitX(chain[chaini]),GetUnitY(chain[chaini]),GetUnitX(host),GetUnitY(host)) < 100 then
                    call RemoveUnit(chain[chaini])
                    set chain[chaini] = null
                    set chaini = chaini - 1
                    if chaini == -1 then
                        call .Destroy()
                    endif
                endif
            endif
        endmethod
        
endstruct

private function Engine takes nothing returns nothing
local integer i = 0
local mhook h
local group g
local unit t 
    loop
    exitwhen i > ihook
        if ahook[i] != 0 then
            set h = ahook[i]
            //--run--//
            call h.Move()
        else
            set ahook[i] = ahook[ihook]
            set ahook[ihook] = 0
            set ihook = ihook - 1
            set i = i - 1 
        endif
    set i = i + 1
    endloop
    //call DestroyGroup(g)
    set g = null
    set t = null
endfunction

function Trig_HookC_Bool takes nothing returns boolean
    if GetSpellAbilityId() == 'A01D' then //Способность Мясной хук
        return true
    else
        return false
    endif
endfunction

function Trig_HookC_Actions takes nothing returns nothing
local mhook h
    set h = mhook.Create(GetSpellAbilityUnit(),GetSpellTargetX(),GetSpellTargetY(),110)
    call h.Start()
endfunction

function Init_Hook takes nothing returns nothing
local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( t, function Trig_HookC_Actions )
    call TriggerAddCondition(t,function Trig_HookC_Bool)
    call TimerStart(CreateTimer(),0.025,true,function Engine)
endfunction

endlibrary
ответ
Просто оставлю это и это здесь

23

» WarCraft 3 / Вопрос по World Editor-у

Похожие вопросы:

ответ
Nirvana мод. Поищи информацию о нём. Там всё чудесно в этом плане вроде как реализовано.
ответ
Во-первых, мешок знаков препинания дарю тебе. Пользуйся на здоровье.
Во-вторых, я так и не уловил суть всего выше сказаного ._.
В-третьих, взломщиков тут не любят. Мы можем научить сделать карту, а по взлому это не к нам.
В-четвертых, если тебе уже кидали программы, но ты не смог ними воспользоватся, то у меня для тебя плохие новости.
В-пятых, повторение одного и того же вопроса много раз обычно карается баном.